# 作者: 赵若云
# 2025年02月24日11时14分38秒
# 3478783573@qq.com
import copy


def use_copy():
    a = [12, 22]
    b = [33, 44]
    c = copy.copy(a)  # copy.copy()是浅copy，主要是复制自定义对象,此时a变c不变
    print(c)
    a[0] = 50
    print(c)


def use_deep_copy():
    a = [12, 22]
    b = [33, 44]
    # 浅copy，浅copy只copy第一层
    c = [a, b]  # 相当于只给c传了a，b的指针，而a，b又指向自己的对象，有嵌套
    print(f'id(c)={id(c)},id(a)={id(a)},id(b)={id(b)}')
    # d = copy.copy(c)  # 浅copy只copy第一层,列表是浅copy
    # d = c.copy()  # 等价于copy.copy() # 列表的copy方法是浅copy
    # 深copy 深copy会copy所有层
    d = copy.deepcopy(c)  # 相当于copy的数据，而不是a，b指针，递归地进行copy
    print(f'id(c)={id(c)},id(d)={id(d)}')  # 地址不同
    a[0] = 50  # 浅copy时c会变
    print(c)
    print(d)


if __name__ == '__main__':
    use_copy()
    use_deep_copy()
